package com.ny.demo518;

import java.util.Set;

// 员工管理类（使用 Set 集合）
public class TestSet {

    // 添加员工：将员工对象添加到 Set 中
    public void addEmp(Set<Emp> set, Emp emp) {
        set.add(emp); // Set 的添加操作与 List 一致
    }

    // 遍历所有员工
    public void findAllEmp(Set<Emp> set) {
        for (Emp emp : set) {  // Set 无索引，使用增强 for 循环遍历
            System.out.println(emp);
        }
    }

    // 根据姓名查找员工
    public Emp findEmpName(Set<Emp> set, String empName) {
        for (Emp emp : set) {  // 遍历 Set 中所有元素
            if (empName.equals(emp.getName())) {
                return emp;
            }
        }
        return null;
    }

    // 根据工号删除员工（Set 无索引，需先找到目标再删除）
    public void deleteEmp(Set<Emp> set, String empNumber) {
        Emp get = null;
        for (Emp emp : set) {  // 先遍历找到匹配的员工
            if (empNumber.equals(emp.getNumber())) {
                get = emp;
                break;
            }
        }
        if (get != null) {
            set.remove(get);  // 通过元素本身删除
        }
    }

    // 根据工号查找员工
    public Emp findEmpNumber(Set<Emp> set, String empNumber) {
        for (Emp emp : set) {  // 遍历 Set 中所有元素
            if (empNumber.equals(emp.getNumber())) {
                return emp;
            }
        }
        return null;
    }

    // 更新员工信息（通过工号匹配，先删除旧员工再添加新员工）
    public void updateEmp(Set<Emp> set, Emp emp) {
        String getNumber = emp.getNumber();
        Emp oldEmp = null;
        for (Emp emp1 : set) {  // 找到旧员工
            if (getNumber.equals(emp.getNumber())) {
                oldEmp = emp;
                break;
            }
        }
        if (oldEmp != null) {
            set.remove(oldEmp);  // 删除旧员工
            set.add(emp);     // 添加新员工（利用 Set 的唯一性自动覆盖）
        }
    }


}
